
# 定义登录功能

user_data = [{'role':'admin','account':'admin','password':'123456','dept':'tester'},{'role':'test','account':'test','password':'123456','dept':'tester'}]

# 定义默认返回结果
result = {'code':50 , 'message':''}


# 登录功能
def login(username,password):

    # 如果用户名为空或密码为空 ，给出用户名或密码不能为空的提示
    if username is None or username == '':
        result.update({'code':1,'message':"用户名不能为空!"})
        return result
    if password is None or password == '':
        result.update({'code':2,'message':'密码不能为空!'})
        return result

    # 用户和密码匹配成功，登录成功 ，并且将用户的数据一起返回 。
    for user_info in user_data:
        if username == user_info.get('account') and password == user_info.get('password'):
            result.update({"code":0,"message":"登录成功!",'user_list':user_data})
            return result

    # 如果用户和密码不匹配 ，给出错误提示 。
    result.update({'code':3,"message":"用户名或密码不正确，请重新输入!"})
    return result


class User(object):


    # 用户查询功能
    def get_user(self,username=None):
        # 1.判断用户是否登录 ，若没有登录 ，给出错误提示
        if result.get('code'):
            result.update({'code':11,'message':'用户未登录，无法查询用户数据'})
            return result
        # 2. 是否输入用户名
        if username is None or username == '':
            result.update({'code':12,'message':'请输入查询的用户名!'})
            return result

        result.update({'user_list':[]})
        # 拿着用户传入的用户到列表中进行查询，若查询到则返回数据，若没有查询到给出提示 。
        lst = []        # 存放的是查询后的用户数据。
        for x in user_data:
            account = x.get('account')
            if username in account:     # 支持模糊查询
                x.pop('password')       # 将此键值对从字典中删除。
                lst.append(x)

        # 若查询到了数据
        if lst:
            result.update({'code':10,"message":"用户查询成功!","user_list":lst})
            return result

        # 未查询到用户数据
        result.update({"code":13,"message":"未查询到用户数据"})
        return result


if __name__ == '__main__':

    user = User()
    flag = True
    while flag:
        vls = input("请用户输入对应编号进行操作:"
                    "\n 1:) 进行登录"
                    "\n 2:) 进行用户查询，请输入用户名"
                    "\n q:) 退出操作"
                    "\n 其它字符:) 未知操作，请重新输入:")
        if vls not in ('1','2','q','quit'):
            print("="*30)
            continue

        # 登录操作
        if vls == '1':
            username = input("请输入用户名:")
            password = input("请输入密码:")

            login_result = login(username, password)
            print(login_result)
            print("="*30)

        # 用户查询
        if vls == '2':
            name = input("请输入查询的用户名:")
            get_result = user.get_user(name)
            print(get_result)
            print("=" * 30)

        # 用户退出
        if vls in ('q','quit'):
            flag = False
            print("退出成功!")